// 频道的模块
import { reqGetChannels, reqGetAllChannels } from '@/api/channels'
const state = {
  // 我的频道的数据
  channels: [],
  // 所有频道的数据
  allChannels: []
}
const mutations = {
  // 设置我的频道的数据
  setMyChannels (state, channels) {
    state.channels = channels
  },
  // 设置所有频道的数据
  setAllChannel (state, allchannels) {
    state.allChannels = allchannels
  },
  // 新增频道
  addChannel (state, channel) {
    state.channels.push(channel)
  },
  // 删除频道
  delChannel (state, index) {
    state.channels.splice(index, 1)
  }
}
const actions = {
  // 发送请求获取我的频道
  async getMyChannels (context) {
    const data = await reqGetChannels()
    // action提交的是mutation, mutation操作的state中的数据
    context.commit('setMyChannels', data.data.channels)
  },
  // 发送请求获取所有频道
  async getAllChannels (context) {
    const data = await reqGetAllChannels()
    // console.log(data) // 返回的所有的频道是不包含推荐的
    // action提交的是mutation, mutation操作的state中的数据
    context.commit('setAllChannel', data.data.channels)
  }
}
// 基于state派生数据可以定义在getters
const getters = {
  // 可选频道的数据 = 所有频道的数据 - 我的频道的数据 数组过滤 filter
  // all : [{id:1,name:xxx}, {id:2,name:xxx}, {id:3,name:xxx}, {id:4,name:xxx}]
  // my :  [{id:1,name:xxx}]
  // optional :[{id:2,name:xxx},{id:3,name:xxx},{id:4,name:xxx}]
  optionalChannels (state) {
    /* const res = state.allChannels.filter(item => {
      let flag = false
      state.channels.forEach(channel => {
        if (item.id === channel.id) {
          flag = true
        }
      })
      return !flag
    })
    console.log(res) // 过滤出来的数组
    return res */
    return state.allChannels.filter(item => {
      const index = state.channels.findIndex(channel => channel.id === item.id)
      // console.log(index)
      // if (index === -1) {
      //   return true
      // } else {
      //   return false
      // }
      return index === -1 // 我们更关心结果是-1 -1说明在我的频道中没有, 需要过滤出来
    })
  }
}
export default {
  namespaced: true, // 开启命名空间之后,mutations / actions / getters 不会挂载到全局了
  state,
  mutations,
  actions,
  getters
}
// 导入store的indexjs中挂载这个模块
